package com.victor.pomelo.service;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.victor.pomelo.model.Menu;
import com.victor.pomelo.model.Pager;
import com.victor.pomelo.model.Resource;
import com.victor.pomelo.model.User;

public interface UserService {

	/**
	 * 创建用户
	 * 
	 * @param user
	 */
	public User createUser(User user);

	/**
	 * 更新用户信息
	 * 
	 * @param user
	 * @return
	 */

	public User updateUser(User user);

	/**
	 * 删除用户
	 * 
	 * @param userId
	 */
	public void deleteUser(Long userId);

	/**
	 * 修改密码
	 * 
	 * @param userId
	 * @param newPassword
	 */
	public void changePassword(Long userId, String newPassword);

	/**
	 * 查询单个用户
	 * 
	 * @param userId
	 * @return
	 */

	public User findById(Long userId);

	/**
	 * 查询所有用户
	 * 
	 * @return
	 */
	public List<User> findAll();

	/**
	 * 根据用户名查找用户
	 * 
	 * @param username
	 * @return
	 */
	public User findByUsername(String username);

	/**
	 * 根据用户名查找其角色
	 * 
	 * @param username
	 * @return
	 */
	public Set<String> findRoles(String username);

	/**
	 * 根据用户名查找其权限
	 * 
	 * @param username
	 * @return
	 */
	public Set<String> findPermissions(String username);

	/**
	 * 根据用户名称查询用户可使用的菜单
	 * 
	 * @param permissions
	 * @return
	 */
	public List<Resource> findResources(Set<String> permissions);

	public List<Menu> findMenus(Map<Long, Resource> resources);

	public List<User> findAll1(Long start, Long offset);

	/**
	 * 通过用户组ID查询到用户组下的用户信息列表
	 * 
	 * @param groupid
	 * @param start
	 * @param offset
	 * @return
	 */
	public Pager<User> findByGroupId(Long groupid, Pager page);
}
